const webpack = require('webpack');
const path = require('path')

function resolve(dir) {
    return path.join(__dirname, dir)
}

//头部引用
const NodePolyfillPlugin = require('node-polyfill-webpack-plugin')

module.exports = {
    configureWebpack: {
        externals: {
            './cptable': 'var cptable',
            fs: require('fs')
        },
        plugins: [new NodePolyfillPlugin()]
    },
    lintOnSave: false,
    chainWebpack(config) {
        // 设置 svg-sprite-loader
        // config 为 webpack 配置对象
        // config.module 表示创建一个具名规则，以后用来修改规则
        config.module
                // 规则
                .rule('svg')
                // 忽略
                .exclude.add(resolve('src/icons'))
                // 结束
                .end()
        // config.module 表示创建一个具名规则，以后用来修改规则
        config.module
                // 规则
                .rule('icons')
                // 正则，解析 .svg 格式文件
                .test(/\.svg$/)
                // 解析的文件
                .include.add(resolve('src/icons'))
                // 结束
                .end()
                // 新增了一个解析的loader
                .use('svg-sprite-loader')
                // 具体的loader
                .loader('svg-sprite-loader')
                // loader 的配置
                .options({
                    symbolId: 'icon-[name]'
                })
                // 结束
                .end()
        config
                .plugin('ignore')
                .use(
                        new webpack.ContextReplacementPlugin(/moment[/\\]locale$/, /zh-cn$/)
                )
        config.module
                .rule('icons')
                .test(/\.svg$/)
                .include.add(resolve('src/icons'))
                .end()
                .use('svg-sprite-loader')
                .loader('svg-sprite-loader')
                .options({
                    symbolId: 'icon-[name]'
                })
                .end()
    }
}